"""
Flask应用配置模块
定义应用的各种配置类
"""
import os
from typing import Dict, Any


class Config:
    """
    基础配置类
    包含所有环境通用的配置
    """
    # 应用密钥配置
    SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key-change-in-production'
    
    # 应用名称
    APP_NAME = "Video Platform API"
    
    # 应用版本
    APP_VERSION = "1.0.0"
    
    # 数据库配置会从database.py中导入
    # Redis配置会从redis.py中导入
    # JWT配置会从auth.py中导入
    
    # CORS配置
    CORS_ORIGINS = ['*']
    CORS_RESOURCES = r'/*'
    
    # JSON配置
    JSON_SORT_KEYS = False
    JSONIFY_MIMETYPE = 'application/json'
    
    # 环境配置
    ENV = os.environ.get('FLASK_ENV', 'development')
    DEBUG = os.environ.get('FLASK_DEBUG', 'False').lower() == 'true'
    

class DevelopmentConfig(Config):
    """
    开发环境配置
    """
    DEBUG = True
    

class TestingConfig(Config):
    """
    测试环境配置
    """
    TESTING = True
    DEBUG = False
    

class ProductionConfig(Config):
    """
    生产环境配置
    """
    DEBUG = False
    

# 配置映射，用于根据环境变量选择对应的配置类
config_by_name: Dict[str, Any] = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,
    'default': DevelopmentConfig
}